/**
 * 
 */
package br.gov.ms.tce.cjur.service.impl;

import java.util.List;
import java.util.Set;

import javax.inject.Inject;
import javax.inject.Named;
import javax.validation.ConstraintViolation;

import org.springframework.transaction.annotation.Transactional;

import br.gov.ms.tce.bean.comum.PessoaFisica;
import br.gov.ms.tce.bean.comum.Usuario;
import br.gov.ms.tce.cjur.helper.CriptografaMD5Helper;
import br.gov.ms.tce.cjur.service.PessoaService;
import br.gov.ms.tce.modelo.dao.PessoaFisicaDAO;

/**
 *  @class PessoaServiceImpl
 * @author Anderson Paulino
 * @date 28/05/2011
 *
 */
@Named
public class PessoaServiceImpl extends AbstractService implements PessoaService {
	
	
	@Inject private PessoaFisicaDAO pessoaFisicaDAO;

	/**
	 * @see br.gov.ms.tce.cjur.service.PessoaService#findPessoaFisicaValiadoByCPF(java.lang.String)
	 */
	@Override
	public PessoaFisica findPessoaFisicaValiadoByCPF(String cpf) {
		List<PessoaFisica> list = pessoaFisicaDAO.findPessoaFisicaByCPF(cpf); 
		return list.isEmpty() ? null:list.get(0);
	}

	/**
	 * @see br.gov.ms.tce.cjur.service.PessoaService#findPessoaFisicaValiadoBySubCPF(java.lang.String)
	 */
	@Override
	public List<PessoaFisica> findPessoaFisicaValiadoBySubCPF(String cpf) {
		return pessoaFisicaDAO.findPessoaFisicaByCPF(cpf+"%");
	}

	/**
	 * @see br.gov.ms.tce.cjur.service.PessoaService#salvar(br.gov.ms.tce.bean.comum.PessoaFisica)
	 */
	@Override
	@Transactional
	public Set<ConstraintViolation<PessoaFisica>> salvar(PessoaFisica pf) {
		for(Usuario usuario:pf.getUsuarios()){
			usuario.setLogin(pf.getCpf());
			usuario.setSenha(CriptografaMD5Helper.criptografa(usuario.getSenha()));
		}
			
		Set<ConstraintViolation<PessoaFisica>> erros = getValidator().validate(pf);
		if(erros.isEmpty())
			pessoaFisicaDAO.persist(pf);
		
		return erros;
		
	}
	
	

}
